package com.hspedu.polymorphic_.objectpoly;



/**
 * 对象的多态
 * 1.一个对象的编译类型和运行类型可以不一致
 * 2.编译类型在定义对象时，就确定了，不能改变
 * 3.运行类型是可以变化的
 * 4.编译类型看定义时 = 的左边， 运行类型看 = 的右边
 */
public class PolyObject {
    public static void main(String[] args) {
        //父类的引用指向子类的对象
        Animal animal = new Dog();//animal编译类型是Animal，运行类型Dog
        animal.cry();//运行时，执行到该行时，animal运行类型是Dog, 所以cry就是Dog的cry
        animal = new Cat();//编译类型仍然是Animal，animal的运行类型变成了Cat
        animal.cry();


    }
}
